Arquitetura Cliente-Servidor
Tempo estimado de leitura: 1min
De forma geral, principalmente se tratando de aplicações Web:
- Cliente = Front-end
- executado no computador do usuário
- responsável pelo "visual"
- Servidor = Back-end
- processos e serviços que são executados em um servidor dedicado (ou processos executados em background na máquina do usuário)
- responsável pela comunicação com banco de dados
Ok, mas como isso funciona? Quando você acessa um site, está acessando a aplicação "cliente" - que é responsável por estruturar os dados vindos do Servidor em um template visual.
Exemplo 1
(não real, apenas para ilustração)
- o Usuário acessa a aplicação-cliente no endereço https://www.blog.com
- a aplicação-cliente pede à aplicação-servidor os últimos 3 posts em https://www.api_do_blog.com/posts
-
aplicação-servidor acessa o banco de dados, que retorna todos os
N
posts já feitos, estruturados da forma:{ nome: "Nome do post", conteúdo: "Lorem ipsum dolor sit amet", data_de_publicação: "DD-MM-YYYY" }
-
aplicação-servidor ordena esses dados pela data
-
aplicação-servidor retorna os 3 posts mais recentes para a aplicação-cliente
-
- aplicação-cliente estrutura os dados recebidos de uma forma visual:
<body> { for post in posts } <div> <p>{ post.nome }</p> <p>{ post.conteúdo }</p> <p>{ post.data_de_publicação }</p> </div> { end for} </body>
- aplicação-cliente retorna
html
final do endereço https://www.blog.com ao Usuário, que então é renderizado pelo navegador<body> <div> <p>Post A</p> <p>Conteudo do Post A</p> <p>25-03-2021</p> </div> <div> <p>Post B</p> <p>Conteudo do Post B</p> <p>24-03-2021</p> </div> <div> <p>Post C</p> <p>Conteudo do Post C</p> <p>21-03-2021</p> </div> </body>
Exemplo 2
(não real, apenas para ilustração)
- Usuário abre jogo Pokemon pelo aplicativo no celular
- Usuário toca no ícone de lista de pokemons
- aplicativo faz requisição para servidor em pokeapi.co/api/v2/pokemon
- servidor acessa banco de dados, retorna todos os pokemons, com
nome
+url
... - aplicativo mostra lista de pokemons